]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
windowMenu: Add option to move different monitor
authoracgtyrant <acgtyrant@gmail.com>
Tue, 24 Mar 2015 03:19:46 +0000 (11:19 +0800)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 14 Apr 2015 21:19:05 +0000 (23:19 +0200)
The window menu has all those workspace related options, but with multiple
monitors, it is much more interesting to quickly move a window 'over' to the
other monitor.

https://bugzilla.gnome.org/show_bug.cgi?id=633994

js/ui/windowMenu.js

index 3d378fad7bf0aa176691417823fb940690b93c0d..a314821317b51370db8d20baa09dffe4efdf6b06 100644 (file)
@@ -115,6 +115,39 @@ const WindowMenu = new Lang.Class({
             }
         }
 
+        let screen = global.screen;
+        let nMonitors = screen.get_n_monitors();
+        if (nMonitors > 1) {
+          this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+
+          let monitorIndex = window.get_monitor();
+
+          let upMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.UP);
+          if (upMonitorIndex != -1) {
+            this.addAction(_("Move to Monitor Up"), Lang.bind(this, function(event) {
+              window.move_to_monitor(upMonitorIndex);
+            }));
+          }
+          let downMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.DOWN);
+          if (downMonitorIndex != -1) {
+            this.addAction(_("Move to Monitor Down"), Lang.bind(this, function(event) {
+              window.move_to_monitor(downMonitorIndex);
+            }));
+          }
+          let leftMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.LEFT);
+          if (leftMonitorIndex != -1) {
+            this.addAction(_("Move to Monitor Left"), Lang.bind(this, function(event) {
+              window.move_to_monitor(leftMonitorIndex);
+            }));
+          }
+          let rightMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.RIGHT);
+          if (rightMonitorIndex != -1) {
+            this.addAction(_("Move to Monitor Right"), Lang.bind(this, function(event) {
+              window.move_to_monitor(rightMonitorIndex);
+            }));
+          }
+        }
+
         this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
 
         item = this.addAction(_("Close"), Lang.bind(this, function(event) {